Field of the Invention
The present invention relates to multi-tier application computing in a cloud computing environment and more particularly to resource management for a multi-tier application operating in a cloud computing environment.
Description of the Related Art
A multi-tier application refers to a computer program developed for deployment across multiple layers of the computing infrastructure. In this regard, a multi-tier application logically separates the different application-specific, operational layers from its presentation and data layers. The number of layers varies by requirement, but a three-tier layering appears to be the most commonly used multi-tier application architecture. Thus, any application that depends upon or utilizes a middleware application is known as a multi-tier application. A multi-tier application is also known as a multi-tiered application or n-tier application.
As a consequence its multi-tier nature, each component of a multi-tier application may be separately developed and executed. Thereafter, each component is deployed into a manually determined layer of the multi-tier architecture. The layers typically configured to receive the deployment of a component include a presentation layer providing basic user interface and application access services, an application processing layer that includes the core business or application logic, a data access layer that provides the mechanism used to access and process data, and a data layer that physically holds and manages the data.
Application developers generally create patterns describing the structure of multi-tier applications. These patterns can be used by pattern engines in order to deploy the components of the multi-tier application into the desirable layers of the n-tier architecture. In particular, each layer can support one or more different virtual machines into which components are deployed according to the relevant patterns. Depending upon the layer, the virtual machines individually can include resources necessary to support components deployed therein such as a Web server, a load balancer, one or more application servers, and a database server.
Of note, security considerations require that different tiers of an n-tier application are deployed in distinct ways. For example, only an external-facing Web server and load balancer might have network connectivity to the public Internet, while all other servers might be isolated in separate networks with special firewall rules controlling network connections between the servers. The implication of these security requirements may require different tiers of the application to be deployed to wholly distinct infrastructure—different virtualization servers, using different networks, and using different storage servers.
Thus, the process of deploying components into an n-tier architecture can be manually intensive counter to the desire of the infrastructure administrator for a degree of automation. Having to manually associate virtual machines with infrastructure elements is both inefficient and error-prone, and can result in application failures and in security exposures.